Under conventional designs, in complex interconnected computing system, when the system attempts to transition into a low or an ultra-low power state, the system can experience inefficiency in the process and lack of flexibility in the design, which can create a barrier to integrate or introduce new device(s) because new software and modification of the old software stack are often required.
For example, in conventional designs, the main computer processing unit (CPU) scans through its list of known devices and initiate the power state transitioning for each individual device. This process is often inefficient because each device tends have its own specific power management requirement, and thus, the system must rely on extensive software stacks curtailing each technology. For example, Universal Serial Bus (USB) and Peripheral Component Interconnect Express (PCI-e), each has its own power management requirements. Other external devices over a common bus such as Inter-Integrated Circuit (I2C) or Serial Peripheral Interface bus (SPI) can also require different handling before transitioning to a power state.
In a Linux power management framework, for example, the process for setting the system into an ultra-low power state can involve the operating system traversing through the list of registered (known) devices in the system and performing, the following steps: (1) prepare and set devices in group A for low power; (2) perform power-down sequence for each device in the group; (3) remove power to all devices within the group (if it supports) for further power saving; (4) prepare and set devices in group B for low power; (5) perform power-down sequence for each device in the group; (6) remove power to all devices within the group (if it supports) for further power saving; (7) repeat for device group C, D, E, etc.; (8) main CPU powers down other sub-CPU in the system; (9) main CPU jumps to location outside of DRAM to put DRAM in self-refresh; and (10) main CPU put itself in ultra-low power state waiting for interrupt to wake up.
Although there are advance computing techniques such as multi-threading and software stacks that group similar devices to increase the efficiency in the process, these computing techniques still do not allow true autonomous behavior in devices (or group of devices) while transitioning into an ultra-low power state. Rather, the process still depends on the main CPU to tend to the progress. For system with small number of connected devices, the approach may be manageable at a reasonable performance. However, under complex system, for example, with thousands of connected devices, this process cannot be efficiently scaled because the dependency presents serious stress on the main CPU to meet the similar performance. In addition, similar response time to enter and exit the ultra-low power state is no longer achievable.
In addition, existing architectures do not provide simple method for integrating new device(s) into the system power domain. For example, if a new device is added to an existing system, additional software may be required to handle the power management logic and which must be created by someone with knowledge of the existing system. In addition, when new software is added to the system at such a low level, the process may require additional time and effort to audit the software to help ensure its quality.